# -*- coding: utf-8 -*- 
from IPosicionable import IPosicionable
from ITener import ITener 

class ITenerParticula(ITener):
    
    __particula=None
     
    def __init__(self, particula):
        self.__particula=particula
        self.actualizarPosiciones()
        
    def tener(self, particula):
        #no hay asignada una particula??
        if(self.__particula!=None):
            if(self.__particula.esAbsorbente() or (self.__particula.esLiquida() and not particula.esAbsorbente())):
                self.__particula.tener(particula)
            else:
                elementos=self.__particula.getElementos()
                elementos.update({self.__particula.getNombre(): self.__particula})
                particula.setElementos(elementos)
                self.__particula=particula
        else:
            self.__particula=particula
            
        self.actualizarPosiciones()
        
        
    def soltar(self, nombreObjeto=""):
        particula=self.__particula
        self.__particula=None
        return particula

    def getObjeto(self, objeto=""):
        return self.__particula
    
    def getParticula(self):
        return self.__particula
    
    def getObjetos(self):
        return [self.__particula]
    
    def actualizarPosiciones(self):
        if(isinstance(self.__particula, IPosicionable) and isinstance(self, IPosicionable)):
            self.__particula.setPosicion(self.getPosicion())